package com.us.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang.time.FastDateFormat;

/**
 * 日期操作函数
 * 
 * @author monlyu
 * @since 2009-12-25
 */
public class DateUtil {

    public static final String DATE_PATTERN = "yyyy-MM-dd";
    public static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    public static final String DATETIMENOS_PATTERN = "yyyy-MM-dd HH:mm";

    /**
     * @return 当前日期
     */
    public static Date now() {
        return new Date();
    }

    /**
     * 当前日期的字符串
     */
    public static String now2Str() {
        return format(now());
    }

    /**
     * 当前时间的字符串
     */
    public static String nowtime2Str() {
        return format(now(), DATETIME_PATTERN);
    }

    /**
     * 格式化时间为字符串格式<br>
     * 默认为 yyyy-MM-dd
     * 
     * @param date
     * @return 经过格式化之后的日期
     */
    public static String format(Date date) {
        return format(date, DATE_PATTERN);
    }

    /**
     * 格式化时间为字符串格式<br>
     * 
     * @param date
     *        需要格式化的时间
     * @param pattern
     *        匹配的的样式
     * @return 日期对应的字串
     */
    public static String format(Date date, String pattern) {
        if (date == null) {
            return null;
        }
        return FastDateFormat.getInstance(pattern).format(date);
    }

    public static Date parse(String value, String parnet) {
        if (StringUtil.isTrimEmpty(value)) {
            return null;
        }
        DateFormat parser = new SimpleDateFormat(parnet);
        try {
            return parser.parse(value);
        } catch (ParseException e) {
            throw new IllegalArgumentException("格式化日期格式的时候出错:" + value + "@" + parnet);
        }
    }
}
